/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package co.edu.senaclem.logica;

import co.edu.senaclem.modelo.Coordinador;
import co.edu.senaclem.persistencia.ICoordinadorDAO;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;


/**
 *
 * @author FELIPE
 */
@Stateless
public class CoordinadorLogica implements CoordinadorLogicaLocal {

    @EJB
    private ICoordinadorDAO coordinadorDAO;    
    
    
    @Override
    public void registrar(Coordinador coordinador) throws Exception {
        //validaciones
        if(coordinador==null) {
            throw new Exception("El Coordinador es Nulo!");
        }
        
        if(coordinador.getTipocoordinador()==null || coordinador.getTipocoordinador().equals("")) {
            throw new Exception("El Tipo es Obligatorio!");
        }        
       
        //consulta si el coordinador ya existe
        Coordinador entity=coordinadorDAO.consultarPorId(coordinador.getDocumentocoordinador());
        if(entity!=null){
            throw new Exception("El Coordinador Ya Existe!"); 
        }                        
        
        coordinadorDAO.insertar(coordinador);
       
        
    }

    @Override
    public void modificar(Coordinador coordinador) throws Exception {
        //validaciones
        if(coordinador==null) {
            throw new Exception("El Coordinador es Nulo!");
        }
        
        if(coordinador.getTipocoordinador()==null || coordinador.getTipocoordinador().equals("")) {
            throw new Exception("El Tipo es Obligatorio!");
        }        
       
        //consulta si el coordinador NO existe, sino existe no se puede modificar
        Coordinador entity=coordinadorDAO.consultarPorId(coordinador.getDocumentocoordinador());
        if(entity==null){
            throw new Exception("El Coordinador No Existe!"); 
        }                        
        
        //se envia el objeto entity a modificar porque es quien tiene el valor del coordinador si existe
        //no se setea la contraseña porque en el formulario principal no se puede modificar        
        entity.setTipocoordinador(coordinador.getTipocoordinador());        
        
        coordinadorDAO.modificar(entity);
    }

    @Override
    public void eliminar(Coordinador coordinador) throws Exception {
        //validaciones
        if(coordinador==null) {
            throw new Exception("El Coordinador es Nulo!");
        }
        
        if(coordinador.getDocumentocoordinador()==null || coordinador.getDocumentocoordinador()==0) {
            throw new Exception("La Identificación es Obligatoria!");
        }
        
        //consulta si el coordinador NO existe, sino existe no se puede eliminar
        Coordinador entity=coordinadorDAO.consultarPorId(coordinador.getDocumentocoordinador());
        if(entity==null){
            throw new Exception("El Coordinador No Existe!"); 
        }
                        
        coordinadorDAO.eliminar(entity);
    }

    @Override
    public Coordinador consultarPorId(Long documentocoordinador) throws Exception {
        if(documentocoordinador==null || documentocoordinador==0){
            throw new Exception("La Cédula es Obligatoria!");
        }
        
        return coordinadorDAO.consultarPorId(documentocoordinador);
    }

    @Override
    public List<Coordinador> consultar() throws Exception {
        return coordinadorDAO.consultar();
    }    

}
